﻿
namespace RialternativeSample.Server.NorthwindService
{
    using System;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies CategoriesMetadata as the class
    // that carries additional metadata for the Categories class.
    [MetadataTypeAttribute(typeof(Categories.CategoriesMetadata))]
    public partial class Categories
    {

        // This class allows you to attach custom attributes to properties
        // of the Categories class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CategoriesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CategoriesMetadata()
            {
            }

            public int CategoryID { get; set; }

            public string CategoryName { get; set; }

            public string Description { get; set; }

            public byte[] Picture { get; set; }

            public EntityCollection<Products> Products { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CustomerDemographicsMetadata as the class
    // that carries additional metadata for the CustomerDemographics class.
    [MetadataTypeAttribute(typeof(CustomerDemographics.CustomerDemographicsMetadata))]
    public partial class CustomerDemographics
    {

        // This class allows you to attach custom attributes to properties
        // of the CustomerDemographics class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CustomerDemographicsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CustomerDemographicsMetadata()
            {
            }

            public string CustomerDesc { get; set; }

            public EntityCollection<Customers> Customers { get; set; }

            public string CustomerTypeID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CustomersMetadata as the class
    // that carries additional metadata for the Customers class.
    [MetadataTypeAttribute(typeof(Customers.CustomersMetadata))]
    public partial class Customers
    {

        // This class allows you to attach custom attributes to properties
        // of the Customers class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CustomersMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CustomersMetadata()
            {
            }

            public string Address { get; set; }

            public string City { get; set; }

            public string CompanyName { get; set; }

            public string ContactName { get; set; }

            public string ContactTitle { get; set; }

            public string Country { get; set; }

            public EntityCollection<CustomerDemographics> CustomerDemographics { get; set; }

            public string CustomerID { get; set; }

            public string Fax { get; set; }

            [Include]
            public EntityCollection<Orders> Orders { get; set; }

            public string Phone { get; set; }

            public string PostalCode { get; set; }

            public string Region { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies EmployeesMetadata as the class
    // that carries additional metadata for the Employees class.
    [MetadataTypeAttribute(typeof(Employees.EmployeesMetadata))]
    public partial class Employees
    {

        // This class allows you to attach custom attributes to properties
        // of the Employees class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class EmployeesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private EmployeesMetadata()
            {
            }

            public string Address { get; set; }

            public Nullable<DateTime> BirthDate { get; set; }

            public string City { get; set; }

            public string Country { get; set; }

            public int EmployeeID { get; set; }

            [Include]
            public EntityCollection<Employees> Employees1 { get; set; }

            public Employees Employees2 { get; set; }

            public string Extension { get; set; }

            public string FirstName { get; set; }

            public Nullable<DateTime> HireDate { get; set; }

            public string HomePhone { get; set; }

            public string LastName { get; set; }

            public string Notes { get; set; }

            public EntityCollection<Orders> Orders { get; set; }

            public byte[] Photo { get; set; }

            public string PhotoPath { get; set; }

            public string PostalCode { get; set; }

            public string Region { get; set; }

            public Nullable<int> ReportsTo { get; set; }

            public string Title { get; set; }

            public string TitleOfCourtesy { get; set; }

            [Include]
            public EntityCollection<EmployeeTerritory> EmployeeTerritories { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies EmployeesMetadata as the class
    // that carries additional metadata for the Employees class.
    [MetadataTypeAttribute(typeof(EmployeeTerritory.EmployeeTerritoryMetadata))]
    public partial class EmployeeTerritory
    {

        // This class allows you to attach custom attributes to properties
        // of the Employees class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class EmployeeTerritoryMetadata
        {
            public int EmployeeID { get; set; }

            public int TerritoryID { get; set; }

            [Include]
            public Employees Employee { get; set; }

            [Include]
            public Territories Territory { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies Order_DetailsMetadata as the class
    // that carries additional metadata for the Order_Details class.
    [MetadataTypeAttribute(typeof(Order_Details.Order_DetailsMetadata))]
    public partial class Order_Details
    {

        // This class allows you to attach custom attributes to properties
        // of the Order_Details class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class Order_DetailsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private Order_DetailsMetadata()
            {
            }

            public float Discount { get; set; }

            public int OrderID { get; set; }

            public Orders Orders { get; set; }

            public int ProductID { get; set; }

            public Products Products { get; set; }

            public short Quantity { get; set; }

            public decimal UnitPrice { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies OrdersMetadata as the class
    // that carries additional metadata for the Orders class.
    [MetadataTypeAttribute(typeof(Orders.OrdersMetadata))]
    public partial class Orders
    {

        // This class allows you to attach custom attributes to properties
        // of the Orders class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class OrdersMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private OrdersMetadata()
            {
            }

            public string CustomerID { get; set; }

            public Customers Customers { get; set; }

            public Nullable<int> EmployeeID { get; set; }

            public Employees Employees { get; set; }

            public Nullable<decimal> Freight { get; set; }

            public EntityCollection<Order_Details> Order_Details { get; set; }

            public Nullable<DateTime> OrderDate { get; set; }

            public int OrderID { get; set; }

            public Nullable<DateTime> RequiredDate { get; set; }

            public string ShipAddress { get; set; }

            public string ShipCity { get; set; }

            public string ShipCountry { get; set; }

            public string ShipName { get; set; }

            public Nullable<DateTime> ShippedDate { get; set; }

            public Shippers Shippers { get; set; }

            public string ShipPostalCode { get; set; }

            public string ShipRegion { get; set; }

            public Nullable<int> ShipVia { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ProductsMetadata as the class
    // that carries additional metadata for the Products class.
    [MetadataTypeAttribute(typeof(Products.ProductsMetadata))]
    public partial class Products
    {

        // This class allows you to attach custom attributes to properties
        // of the Products class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ProductsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ProductsMetadata()
            {
            }

            [Include]
            public Categories Categories { get; set; }

            public Nullable<int> CategoryID { get; set; }

            public bool Discontinued { get; set; }

            public EntityCollection<Order_Details> Order_Details { get; set; }

            public int ProductID { get; set; }

            public string ProductName { get; set; }

            public string QuantityPerUnit { get; set; }

            public Nullable<short> ReorderLevel { get; set; }

            public Nullable<int> SupplierID { get; set; }

            [Include]
            public Suppliers Suppliers { get; set; }

            public Nullable<decimal> UnitPrice { get; set; }

            public Nullable<short> UnitsInStock { get; set; }

            public Nullable<short> UnitsOnOrder { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies RegionMetadata as the class
    // that carries additional metadata for the Region class.
    [MetadataTypeAttribute(typeof(Region.RegionMetadata))]
    public partial class Region
    {

        // This class allows you to attach custom attributes to properties
        // of the Region class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class RegionMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private RegionMetadata()
            {
            }

            public string RegionDescription { get; set; }

            public int RegionID { get; set; }

            public EntityCollection<Territories> Territories { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ShippersMetadata as the class
    // that carries additional metadata for the Shippers class.
    [MetadataTypeAttribute(typeof(Shippers.ShippersMetadata))]
    public partial class Shippers
    {

        // This class allows you to attach custom attributes to properties
        // of the Shippers class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ShippersMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ShippersMetadata()
            {
            }

            public string CompanyName { get; set; }

            public EntityCollection<Orders> Orders { get; set; }

            public string Phone { get; set; }

            public int ShipperID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies SuppliersMetadata as the class
    // that carries additional metadata for the Suppliers class.
    [MetadataTypeAttribute(typeof(Suppliers.SuppliersMetadata))]
    public partial class Suppliers
    {

        // This class allows you to attach custom attributes to properties
        // of the Suppliers class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class SuppliersMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private SuppliersMetadata()
            {
            }

            public string Address { get; set; }

            public string City { get; set; }

            public string CompanyName { get; set; }

            public string ContactName { get; set; }

            public string ContactTitle { get; set; }

            public string Country { get; set; }

            public string Fax { get; set; }

            public string HomePage { get; set; }

            public string Phone { get; set; }

            public string PostalCode { get; set; }

            public EntityCollection<Products> Products { get; set; }

            public string Region { get; set; }

            public int SupplierID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TerritoriesMetadata as the class
    // that carries additional metadata for the Territories class.
    [MetadataTypeAttribute(typeof(Territories.TerritoriesMetadata))]
    public partial class Territories
    {

        // This class allows you to attach custom attributes to properties
        // of the Territories class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TerritoriesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TerritoriesMetadata()
            {
            }

            [Include]
            public EntityCollection<EmployeeTerritory> EmployeeTerritories { get; set; }

            [Include]
            public Region Region { get; set; }

            public int RegionID { get; set; }

            public string TerritoryDescription { get; set; }

            public string TerritoryID { get; set; }
        }
    }
}
